package io;

import java.io.FileOutputStream;
import java.io.IOException;

/**
 * java IO 输入与输出
 * Java的IO是用来完成我们的程序与外界交换数据的方式，并且将输入与输出
 * 按照方向分为读与写操作，
 * 其中输入负责读取，是外界到程序的方向
 * 输出负责写，是程序到外界的方向
 *
 * Java中定义的输入流与输出流可以看作是连接程序与外接设备的管道，而
 * 管道中向着同一方向顺序移动字节数据
 *
 * 实际开发中,读写不同的设备我们会使用专门的输入与输出流,好比我们读写
 * 文件就可以使用文件输入与输出流.
 *
 * Java中定义了输入流与输出流的超类，用于规范输入与输出的读写操作
 * java.io.InputStream是输入流的超类，所有字节输入流都继承自它
 * java.io.OutputStream是输出流的超类，所有字节输出流都继承自它
 *
 * Java将流分为两类：节点流和处理流
 * 节点流:也称为低级流，是真实连接程序与另一端的"管道",负责实际
 *       读写数据的流.IO操作一定是给予某个节点流基础上进行的.
 * 处理流:也称为高级流,他不能独立存在,必须连接在其他流上,目的是当
 *       数据流经当前流时对其进行某些加工操作,是得我们读写数据得以简化
 * 实际开发中我们经常会串联一组高级流到某个低级流上,读写数据以
 * 流水线式的加工处理,这也称为"流的连接".
 *
 * 文件流(是一对低级流)
 * java.io.FileInputStream和FileOutputStream
 * 它们是用来读写文件数据的流，是连接程序与文件之间的"管道"
 */
public class F0SDemo {
    public static void main(String[] args) throws IOException {
        //向当前目录下的文件fos.dat中写入字节
        /*
            文件输出流常见的构造方法
            FileOutputStream(String path)
            FileOutputStream(File file)
         */
        FileOutputStream fos = new FileOutputStream("./fos.dat");

        /*
            void write(int b)
            向文件中写入一个字节，写入的内容是给定的int值和对应的二进制的低八位

            fos.write(1)
            int型的1对应的2进制：
            00000000 00000000 00000000 00000001

            fos.dat文件中
            00000001
         */
        fos.write(1);
        /*
            2的2进制：
            00000000 00000000 00000000 00000010

            fos.dat文件中
            00000010
         */

        fos.write(2);
        System.out.println("写出完毕！");
        fos.close();              //流使用完毕后必须关闭
    }
}














